using Hospital.API.Dto;
using Hospital.Domain;
using Hospital.ErrorCode;

namespace Hospital.API.HospitalServices.IServices
{
    public interface IWorkflowServices
    {
        /// <summary>
        /// 创建工作流
        /// </summary>
        /// <param name="createWorkflowDto">创建工作流请求</param>
        /// <returns>工作流信息</returns>
        Task<APIResult<WorkflowDto>> CreateWorkflow(CreateWorkflowDto createWorkflowDto);

        /// <summary>
        /// 获取工作流列表
        /// </summary>
        /// <param name="queryDto">查询条件</param>
        /// <returns>工作流列表</returns>
        Task<APIResult<APIPaging<List<WorkflowDto>>>> GetWorkflowList(WorkflowQueryDto queryDto);

        /// <summary>
        /// 根据ID获取工作流详情
        /// </summary>
        /// <param name="id">工作流ID</param>
        /// <returns>工作流详情</returns>
        Task<APIResult<WorkflowDto>> GetWorkflowById(int id);

        /// <summary>
        /// 更新工作流步骤
        /// </summary>
        /// <param name="updateStepDto">更新步骤请求</param>
        /// <returns>更新结果</returns>
        Task<APIResult<bool>> UpdateWorkflowStep(UpdateWorkflowStepDto updateStepDto);

        /// <summary>
        /// 获取服务类型列表
        /// </summary>
        /// <returns>服务类型列表</returns>
        Task<APIResult<List<ServiceType>>> GetServiceTypes();
    }
} 